package cn.jofei.core.starter;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;

/**
 * App 容器初始化 钩子 接口
 *
 * @author Jofei Bao
 * @version ngbao v1.0.0
 * @date 2022/8/30 13:21
 */
public interface AppFunctionStarter {
    Logger log = LoggerFactory.getLogger(AppFunctionStarter.class);
    /**
     * 依赖注入前狗子
     *
     * @param o
     */
    void beforeInject(Object o);

    void afterInject(Object o);

    /**
     * 获取这个类的所有父类
     *
     * @param clazz
     * @return
     */
    static List<Class<?>> getSuperClass(Class<?> clazz) {
        List<Class<?>> classes = new ArrayList<>();
        Class<?> suCl = clazz.getSuperclass();
        while (suCl != null) {
            classes.add(suCl);
            suCl = suCl.getSuperclass();
        }
        return classes;
    }

    /**
     * 实例化完成后的执行方法
     */
    void start();
}
